package com.station.Activitys.utils;

import android.text.SpannableString;
import android.text.Spanned;
import android.text.style.AbsoluteSizeSpan;
import android.text.style.ClickableSpan;
import android.text.style.ForegroundColorSpan;
import android.text.style.URLSpan;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 项目名称：
 * 类描述：字符串工具类
 * 创建人：张飞祥
 * 创建时间：2018/04/18 下午2:17
 * 修改人：张飞祥
 * 修改时间：2018/04/18 下午2:17
 * 修改备注：
 */
public class StringUtils {
    /**
     *
     * @param myStr （点击的文字）
     * @param startNumber（起始位置）
     * @param stopNumber （结束位置）
     * @param foregroundColor（定义文本前景色）
     * @param clickableSpan（监听事件）
     * @内容  文本下划线（点击事件）
     */
    public static SpannableString setString(String myStr, int startNumber, int stopNumber, ForegroundColorSpan foregroundColor, ClickableSpan clickableSpan){
        SpannableString spannableString=new SpannableString(myStr);
        spannableString.setSpan(clickableSpan,startNumber,stopNumber, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(foregroundColor,startNumber,stopNumber, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**
     *
     * @param myStr（填充的文字）
     * @param startNumber（起始位置）
     * @param stopNumber （结束位置）
     * @param fontSize    (定义字体大小)
     * @param foregroundColor（定义文本前景色）
     * @内容   文本换行
     * @return  返回相应的值
     */
    public static SpannableString setStringBuffer(String myStr, int startNumber, int stopNumber, AbsoluteSizeSpan fontSize, ForegroundColorSpan foregroundColor){
        SpannableString spannableString=new SpannableString(myStr);
        spannableString.setSpan(foregroundColor,startNumber,stopNumber, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
        spannableString.setSpan(fontSize,startNumber,stopNumber, SpannableString.SPAN_EXCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**
     *
     * @param myStr（填充的文字）
     * @param startNumber（起始位置）
     * @param stopNumber （结束位置）
     * @param foregroundColor（定义文本前景色）
     * @内容   设置 文字为上标
     * @return  返回相应的值
     */
    public static SpannableString setTopString(String myStr, int startNumber, int stopNumber, ForegroundColorSpan foregroundColor){
        SpannableString spannableString=new SpannableString(myStr);
        spannableString.setSpan(foregroundColor,startNumber,stopNumber, SpannableString.SPAN_INCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**
     *
     * @param urlText （超链接文本）
     * @param startNumber（起始位置）
     * @param stopNumber （结束位置）
     * @param url         （跳转url）
     * @内容  超文本连接（调用系统内部浏览器）
     */
    public SpannableString setURL(String urlText, int startNumber, int stopNumber, String url){
        SpannableString spannableString=new SpannableString(urlText);
        URLSpan urlSpan=new URLSpan(url);
        spannableString.setSpan(urlSpan,startNumber,stopNumber, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**
     *
     * @param telText  （可点击文本）
     * @param startNumber （起始位置）
     * @param stopNumber  （结束位置）
     * @param tel          （电话号码）
     * @内容  文本连接到系统拨号键盘（调用拨号界面）
     */
    public SpannableString setTel(String telText, int startNumber, int stopNumber, String tel){
        SpannableString spannableString=new SpannableString(telText);
        URLSpan telSpan=new URLSpan("tel:"+tel);
        spannableString.setSpan(telSpan,startNumber,stopNumber, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
        return spannableString;
    }

    /**
     * String 时间 转换为 天 时 分
     */
    public static String getTimetoString(long timeDiff) {
        StringBuilder builder = new StringBuilder();
        timeDiff = timeDiff / 60000;
        int day = (int) timeDiff / 1440;
        int hour = (int) (timeDiff % 1440) / 60;
        int minute = (int) timeDiff % 60;
        if (day > 0)
            builder.append(day).append("天");
        if (hour > 0)
            builder.append(hour).append("时");
        if (minute > 0)
            builder.append(minute).append("分");
        return builder.toString();
    }



    /**
     * @Description:  密码正则表达式
     * @param @param string
     *  1 可以全数字
     *  2 可以全字母
     *  3 可以全特殊字符(~!@#$%^&*.)
     *  4 三种的组合
     *  5 可以是任意两种的组合
     *  6 长度6-22
     * 返回
     */
    public static boolean isPwdRegular(String string){
        if (!string.matches("^[\\@A-Za-z0-9\\!\\#\\$\\%\\^\\&\\*\\.\\~]{6,22}$")) {
            //包含特殊字符
            return false;
        }
        return true;
    }
    /**
     *
     * 日期字符串转int类型
     *
     */
    public static int isTurnint(String turnInt){
        String[] s1=turnInt.split("\\-");//以"-"为分隔符,分割字符串,然后依次转换为int类型
        int date = 0;
        for (int i=0;i<s1.length;i++){
            date= Integer.valueOf(s1[i])+date;
        }
        return date;
    }

    /**
     *
     * 字符串日期比较 （布尔型）
     *
     */
    public static boolean compareDate(String startDate, String stopDate){
        DateFormat df = new SimpleDateFormat("yyyy/MM/dd");
        try {
            Date start = df.parse(startDate);
            Date stop = df.parse(stopDate);
            if (start.getTime()>stop.getTime()){
                return true;
            }else if (start.getTime()<stop.getTime()){
                return false;
            }else{
                return false;
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return false;
    }

    /**
     * 字符串截取 自定义字符截取
     */
    public static String isStrIntercept(String str, String data){
        //开始切割字符串
        String[] strs=str.split(data);
        //创建新的Str
        String interceptStr = "";
        //将数组重新拼接
        for (String string : strs){
            interceptStr+=string+"\n";
        }
        return interceptStr;
    }

    /**
     * 字符串拼接（以 “,” 号分割）
     */
    public static String getStrSplicing(List<String> strList){

        String urls = "";

        for (int i = 0;i<strList.size();i++){
            if (i == 0)
                urls += strList.get(i);
            else
                urls += ","+strList.get(i);
        }
        return urls;
    }

    /**
     *
     * 日期字符  返回格式 如：199101
     *
     */
    public static String isDateMonth (String date){
        String[] s1=date.split("\\-");//以"-"为分隔符,分割字符串,然后依次转换为String类型
        String time=s1[0]+s1[1];
        return time;
    }

    /**
     *
     * 日期字符  返回格式 如：1991
     *
     */
    public static String isDateYear (String date){
        String[] s1=date.split("\\-");//以"-"为分隔符,分割字符串,然后依次转换为String类型
        return s1[0];
    }

    /**
     * 判断 是否包含了 某个字符
     * @param str       具体字符串
     * @param typeStr   包含特定字符
     * @return
     */
    public static boolean isContainStr(String str, String typeStr){
        boolean status = str.contains(typeStr);
        if(status){
            return true;
        }
        return false;
    }

    /**
     * List 集合去掉重复项
     * @param list
     * @return
     */
    public static List<String> removeDuplicate(List<String> list){
        List<String> listTemp = new ArrayList();
        for(int i=0;i<list.size();i++){
            if(!listTemp.contains(list.get(i))){
                listTemp.add(list.get(i));
            }
        }
        return listTemp;
    }
}
